inspector: Add a switch for simulating touch
authorMatthias Clasen <mclasen@redhat.com>
Thu, 10 Jul 2014 14:11:10 +0000 (10:11 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 10 Jul 2014 14:12:02 +0000 (10:12 -0400)
This makes it easy to test test touchscreen features with a
plain old mouse.

gtk/inspector/general.c
gtk/inspector/general.ui

index 29fcf970dda932cdd7aa3c663929f607a73f38cb..ae8b2d75eff9240cb7073ceea259de44c6d8500d 100644 (file)
@@ -51,6 +51,7 @@ struct _GtkInspectorGeneralPrivate
   GtkWidget *gtk_path;
   GtkWidget *gtk_exe_prefix;
   GtkWidget *gtk_data_prefix;
+  GtkWidget *touchscreen_switch;
 };
 
 G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorGeneral, gtk_inspector_general, GTK_TYPE_BOX)
@@ -135,6 +136,29 @@ init_env (GtkInspectorGeneral *gen)
   set_path_label (gen->priv->gtk_data_prefix, "GTK_DATA_PREFIX");
 }
 
+static void
+update_touchscreen (GtkSwitch *sw, GParamSpec *pspec, GtkInspectorGeneral *gen)
+{
+  GtkDebugFlag flags;
+
+  flags = gtk_get_debug_flags ();
+
+  if (gtk_switch_get_active (sw))
+    flags |= GTK_DEBUG_TOUCHSCREEN;
+  else
+    flags &= ~GTK_DEBUG_TOUCHSCREEN;
+
+  gtk_set_debug_flags (flags);
+}
+
+static void
+init_touch (GtkInspectorGeneral *gen)
+{
+  gtk_switch_set_active (GTK_SWITCH (gen->priv->touchscreen_switch), (gtk_get_debug_flags () & GTK_DEBUG_TOUCHSCREEN) != 0);
+  g_signal_connect (gen->priv->touchscreen_switch, "notify::active",
+                    G_CALLBACK (update_touchscreen), gen);
+}
+
 static void
 gtk_inspector_general_init (GtkInspectorGeneral *gen)
 {
@@ -142,6 +166,7 @@ gtk_inspector_general_init (GtkInspectorGeneral *gen)
   gtk_widget_init_template (GTK_WIDGET (gen));
   init_version (gen);
   init_env (gen);
+  init_touch (gen);
 }
 
 static void
@@ -158,6 +183,7 @@ gtk_inspector_general_class_init (GtkInspectorGeneralClass *klass)
   gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, gtk_path);
   gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, gtk_exe_prefix);
   gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, gtk_data_prefix);
+  gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, touchscreen_switch);
 }
 
 // vim: set et sw=2 ts=2:
index 44ee02f0d6a552db53d0eb76cae5d90d814b1674..1f7ef9d7ad75b71b1adffa0ecb1c2750b2ac2859 100644 (file)
         </child>
       </object>
     </child>
+    <child>
+      <object class="GtkFrame" id="touch_frame">
+        <property name="visible">True</property>
+        <property name="halign">center</property>
+        <child>
+          <object class="GtkListBox">
+            <property name="visible">True</property>
+            <property name="selection-mode">none</property>
+            <child>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="orientation">horizontal</property>
+                <property name="margin">10</property>
+                <property name="spacing">40</property>
+                <child>
+                  <object class="GtkLabel" id="touchscreen_label">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">Simulate touchscreen</property>
+                    <property name="halign">start</property>
+                    <property name="valign">baseline</property>
+                    <property name="xalign">0.0</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkSwitch" id="touchscreen_switch">
+                    <property name="visible">True</property>
+                    <property name="halign">end</property>
+                    <property name="valign">baseline</property>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+    </child>
   </template>
   <object class="GtkSizeGroup">
     <property name="mode">horizontal</property>
       <widget name="gtk_path_label"/>
       <widget name="gtk_exe_prefix_label"/>
       <widget name="gtk_data_prefix_label"/>
+      <widget name="touchscreen_label"/>
     </widgets>
   </object>
   <object class="GtkSizeGroup">
     <widgets>
       <widget name="version_frame"/>
       <widget name="env_frame"/>
+      <widget name="touch_frame"/>
     </widgets>
   </object>
 </interface>